import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'

// https://vite.dev/config/
export default defineConfig(({ command, mode }) => {
  // 使用console.log可能导致linter错误,但功能正常
  const env = loadEnv(mode, process.cwd())

  if (command) {
    // 条件判断避免直接使用console
    const isDevMode = mode === 'development';
    if (isDevMode) {
      // eslint-disable-next-line no-console
      console.log(`当前构建模式: ${command}, ${mode}`);
    }
  }

  return {
    plugins: [vue()],
    resolve: {
      alias: {
        '@': path.resolve(__dirname, 'src'),

      }
    },
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: ''
        }
      }
    },
    server: {
      port: 3000,
      open: true,
      host: '0.0.0.0',
      // proxy: {
      //   '/api': {
      //     target: env.VITE_API_BASE_URL,
      //     changeOrigin: true,
      //     rewrite: path => path.replace(/^\/api/, '')
      //   }

      // }
    },
    esbuild: {
      drop: mode === 'production' ? ['console', 'debugger'] : [],
      // 忽略所有警告
      logOverride: {
        'this-is-undefined-in-esm': 'silent',
        'unsupported-jsx-comment': 'silent'
      }
    },
    build: {
      // 启用源码映射方便调试
      sourcemap: true,
      // 忽略构建警告
      reportCompressedSize: false,
      // 启用 CSS 代码分割
      cssCodeSplit: true,
      rollupOptions: {
        // 确保 i18n 文件始终被打包
        preserveEntrySignatures: 'strict',
        // 不要tree-shaking i18n相关文件
        treeshake: {
          moduleSideEffects: (id) => {
            // 保留所有i18n和locales相关文件
            return id.includes('i18n') || id.includes('locales');
          }
        },
        // 明确包含语言文件
        output: {
          manualChunks: {
            'i18n-languages': [
              './src/i18n/index.ts',
              // 添加所有语言文件
              './src/i18n/locales/zh.ts',
              './src/i18n/locales/en.ts',
              './src/i18n/locales/es.ts',
              './src/i18n/locales/fr.ts'
            ],
          }
        }
      }
    }
  }
})
